
# class Dog():
#     # 类属性
#     tooth = 10
#
#     def __init__(self,name):
#         self.name = name


# d1 = Dog('小黑')
# d2 = Dog('小白')
#
# print(d1.name)       # 通过对象名来访问类方法
# print(Dog.tooth)     # 通过类名访问类属性
# print(d1.tooth)      # 通过对象名 来访问类属性
# print(d2.tooth)

# d1 = Dog('小黑')
# d2 = Dog('小白')
# print(f'{d1.name}有{d1.tooth}牙齿')
# print(f'{d2.name}有{d2.tooth}牙齿')
#
# Dog.tooth = 12    # 更改类属性
# print(f'{d1.name}有{d1.tooth}牙齿')
# print(f'{d2.name}有{d2.tooth}牙齿')
#
# d1.tooth = 16                         # 提供具体对象的属性 那么对于该对象的类属性会被覆盖掉
# print(f'{d1.name}有{d1.tooth}牙齿')    # 当通过对象访问属性时 显示的是对象自己的属性 若没有具体定义 则默认用类属性 若单独定义了自身属性 则会显示自身的属性
# print(f'{d2.name}有{d2.tooth}牙齿')

class Student():
    count = 0

    def __init__(self,name):
        Student.count += 1      #通过类名来访问自身属性
        self.name = name

stu1 = Student('张三')
stu2 = Student('李四')
stu3 = Student('王五')

print(f'学生数量：{Student.count}')         # 打印出创建学生的数量
